package curso.maven.cidades.persistencia.memoria;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import curso.maven.cidades.negocio.Cidade;
import curso.maven.cidades.negocio.RepositorioCidades;

public class RepositorioCidadesMemoria implements RepositorioCidades {
	private List<Cidade> cidades;
	
	public RepositorioCidadesMemoria(Cidade[] cidades) {
		this.cidades = new ArrayList<Cidade>(Arrays.asList(cidades));
	}

	@Override
	public Cidade recuperarCidadePorCodigo(String codigo) {
		for (Cidade cidade : cidades) {
			if (cidade.getCodigo().equals(codigo)) {
				return cidade;
			}
		}
		return null;
	}

	@Override
	public List<Cidade> listarCidadesPorNome(String nome) {
		List<Cidade> cidadesSelecionadas = new ArrayList<Cidade>();
		for (Cidade cidade : cidades) {
			if (nome == null || nome.trim().isEmpty() || cidade.getNome().toLowerCase().startsWith(nome.toLowerCase())) {
				cidadesSelecionadas.add(cidade);
			}
		}
		return cidadesSelecionadas;
	}

	@Override
	public List<Cidade> listarCidadesPorUf(String uf) {
		List<Cidade> cidadesSelecionadas = new ArrayList<Cidade>();
		for (Cidade cidade : cidades) {
			if (cidade.getUf().toUpperCase().equals(uf.toUpperCase())) {
				cidadesSelecionadas.add(cidade);
			}
		}
		return cidadesSelecionadas;
	}
}
